<?php
namespace Admin\Controller;
use Think\Controller;
class AdvertController extends Controller{

    //显示列表
    public function index() {
        //默认是第一页,但如果有get数据,则进一步判断
        $p=1;
        //默认追加查询语句是空字符串,只要有筛选就变成数组
        $map="";
        if($_GET){
            $map=I('get.');
           // dump($_GET['ad_overtime']);
            //去除空字符串元素
            $map = array_filter($map, function($v){return $v !== "";});
            //有get指定页数,就给$p重新赋值
            $p=isset($map['p'])?$map['p']:1;
            //不要这个元素了,剩下的get数据就是where条件
            unset($map['p']);
            //对overtime字段进行处理,
            if( isset($map['ad_overtime'])&&($map['ad_overtime']==1) ){
                    //为后面的超链接做准备
                    $ad_overtime=1;
                    $map['ad_overtime']=array( 'GT',time() );
            }elseif(isset($map['ad_overtime'])&&$map['ad_overtime']==0){
                    $ad_overtime=0;
                    $map['ad_overtime']=array( 'LT',time() );
            }
             if( isset($map['ad_name']) ){
                    $ad_name=$map['ad_name'];
                    $name_like="%".$ad_name."%";
                    $test=$map['ad_name']=array('LIKE',$name_like);
            }
            //但是这个条件要保存在分页的链接中
        }
        $advertmodel=D("advert");
        //pagesize是5条               (当前页-1)*pagesize是offset
        $pnum=5;
        //分页查询
        $adverts=$advertmodel
        ->where($map)
        ->page($p,$pnum)
        ->order('id desc')
        ->select();
        //echo $advertmodel->getLastSql();
        //格式化时间戳
        foreach ($adverts as $k => $v) {
            $adverts[$k]['ad_createtime']=date('Y年-m月-d日 H时i分',$v['ad_createtime']);
            $adverts[$k]['ad_overtime']=date('Y年-m月-d日 H时i分',$v['ad_overtime']);
        }
        //获取总页数,
        $count=$advertmodel->where($map)->count();
        //处理以下两字段以便在上一页下一页传递get参数
        $map['ad_overtime']=$ad_overtime;
        $map['ad_name']=$ad_name;
        //实例化分页对象
        $page=new \Think\Page($count,$pnum,$p,"",$map);
        //获取分页信息
        $show=$page->show();
        //发送分页信息到模版
        $this->assign("show",$show);
        //发送查询结果到页面
        $this->assign('adverts',$adverts);
        //如果收到了get数据,说明用户在使用,就发送json格式数据
        if($_GET){
            $jsontype=array(
            'show'=>$show,
            'adverts'=>$adverts,
            'test'=>$test
            ); 
            echo json_encode($jsontype);
        }
        //如果没收到get数据,就显示模板
        else{
            $this->display(); 
        }
         
    }
    //增加广告(add+insert)
    public function addAdvert() {
        //如果有提交数据
        if(IS_POST){
            //处理表单数据
            //实例化普通对象
            $advert =new \Model\AdvertModel();
            $info=$advert->create();
            if($info){
                $oldpath= ".".$info['ad_img'];
                //echo $oldpath= str_replace("\\","/",$oldpath);
                //新路径
                $newpath=str_replace("temp", "ad", $oldpath);
                //$newpath=getcwd().$newpathurl;
                $newpath=str_replace("\\","/",$newpath);
                $dir=substr(  $newpath, 0,strrpos($newpath, "/")  );
                if (!is_dir($dir)) {
                    # 不存在该目录，创建之
                     echo "进入了不存在";
                    mkdir($dir,0777,true);
                    //如果移动文件成功,就把数据存入数据库

                }
                rename($oldpath,$newpath);
                //把新路径存入数组
                $info['ad_img']=substr($newpath, 1);;
                //time()是当前Unix时间戳
                $info['ad_createtime']=time();
                //有效期是天数加当前时间戳
                $info['ad_overtime']=
                $info['ad_createtime']+24*3600*($info['ad_overtime']);
                if($advert->add($info)){
                    $this->success('添加成功','index',1);
                }else{
                     $this->error('添加失败');
                } 
            }
            else{
                echo "出错了";
                dump($advert->getError());

                $this->assign('errorinfo',$advert->getError());
                $this->display();
                echo "<br />";
            }
            
           
        }
        else{
            $this->display();
        }
        
    }
    //编辑某条并提交(edit,update)
    public function edit() {
        if(IS_POST){
            $advert =new \Model\AdvertModel();
            $info=$advert->create();
            if($info){
                $advert->save($info);
                $this->redirect('Advert/index',"",1,"修改成功");

            }
            else{
                dump($advert->create());
            }
        }
        else{

            //获取传过来的id
            //Model里的属性protected $pk               =   'id';
            $id=I('get.id');
            //获取id=get值的数据
            $advert=D('advert');
            $data=$advert  
            ->find($id);
            //$data['ad_createtime']=date('Y年-m月-d日 H时i分',$data['ad_createtime']);
            $data['ad_overtime']=date('Y年-m月-d日 H时i分',$data['ad_overtime']);

            //为模板赋值
            $this->assign('data',$data);
            $this->display();
        }
    }
        
    //删除操作
    public function del(){
        //获取传过来的id
        $id=I('get.id');
        $advert=M('advert');
        $info=$advert->find($id);
        unlink($info['ad_img']);
        $res=$advert->where(array('id'=>$id))->delete();
        if($res){
            $this->redirect('Advert/index',"",1,"删除成功");
        }/*elseif($res===false){
            echo "sql语句错误";
        }*/
        elseif($res===0){
            echo "没有删除任何数据";
        }
        //Model里的属性protected $pk               =   'id';
        //获取id=get值的数据
        $data=$advert->find($id);
    }
    //左侧固定显示
    function guDing(){
        $advert=D('Advert');
        $map['ad_position']=array('in','左,右');
        $data['ad_position']='右';
        $advert->where($map)
        ->save($data);
        $map['id']=I('get.id');
        $data['ad_position']='左';
        $res=$advert->where($map)
        ->save($data);
        if($res){
            $this->redirect('Advert/index',"",1,"设置此条左侧固定成功");
        }else{
            $this->redirect('Advert/index',"",1,"设置此条左侧固定失败");
        }
    }
    //在上传div中使用的表单
    //广告图片上传方法
    public  function uploadAdImg(){
        $config = array(    'maxSize'    =>    3145728,
                'savePath'   =>    'temp/',
                'saveName'   =>    array( 'uniqid','' ),
                'exts'       =>    array('jpg', 'gif', 'png', 'jpeg'),
                'autoSub'    =>    true,
                'subName'    =>    array('date','Ymd'),
                'maxSize'    =>    500*1024,
               // 'rootPath'   =>    './uploads'
                );
        $t_upload=new \Think\Upload($config);
        /*
         * 文件上传成功后，就可以使用这些文件信息来进行其他的数据操作，例如保存到当前数据表或者单独的附件数据表。
         * 包括上传后的文件名和路径等
         */
        //将文件信息设为上传对象的属性
       $this->uploadinfo=$t_upload->uploadOne($_FILES['pic']);
       if ($this->uploadinfo) {//上传成功
        //将保存路径和文件名设为属性,
            $this->nameandpath= $this->uploadinfo['savepath'].$this->uploadinfo['savename'];
             /*window.parent.document.getElementById('irrorInfo').innerHTML = "图片路径:/{$this->nameandpath}";*/
            echo <<<STR
                <script>
                window.parent.document.getElementById('ad_img').value="/uploads/{$this->nameandpath}";
                console.log(window.parent.document.getElementById('ad_img').value);
            </script>
STR;
        
        echo "<strong>上传成功!</strong>";
        $url=__CONTROLLER__."/uploadform";
        header("refresh:1,url=$url");
        } else{
            dump($this->error);
            header("refresh:10,url=$url");
        }
    } 
}